package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import modelo.Conexion;
import modelo.Equipo;
import modelo.Liga;
import modelo.Partido;
import modelo.DAO.EquipoDAO;
import modelo.DAO.LigaDAO;
import modelo.DAO.PartidoDAO;
import modelo.DAO.UmpireDAO;
import vista.VentanaPlayOff;

public class ControladorVentanaPlayoff implements ActionListener {
	
	private VentanaPlayOff ventanaPlayoff;
	private Liga liga;
	private UmpireDAO umpireDAO;
	private EquipoDAO equipoDAO;
	
	public ControladorVentanaPlayoff(Liga liga) {
		ventanaPlayoff = new VentanaPlayOff();
		ventanaPlayoff.setLocationRelativeTo(null);
		ventanaPlayoff.setVisible(true);
		ventanaPlayoff.agregarListener(this);
		this.liga=liga;
		this.registrarListado();
	}
	
	private void registrarListado(){
		ArrayList<Partido> partidos = liga.getPartidos();
		PartidoDAO partidoDAO = new PartidoDAO();
		for(int i=0; i<partidos.size(); i++){
			Partido partido=liga.getPartidos().get(i);
			partidoDAO.regPartido(partido);
		}
	}
	
	// ESTE METODO DEBERIA IR EN EquipoDAO PERO LO INTENTO LLAMAR ALLA Y NO FUNCIONA
	// ERROR: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	public void actualizarJuegEquipos(Liga liga){
		String tiraSQL = "UPDATE equipos SET juegosjugados='"+0+"', juegosganados='"+0+"', juegosperdidos='"+0+"', diferencia='"+0+"';";
		Conexion.ejecutar(tiraSQL);
	}
	
	// ESTE METODO DEBERIA IR EN UmpireDAO PERO LO INTENTO LLAMAR ALLA Y NO FUNCIONA
	// ERROR: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	public void actualizarJuegArbUmpires(Liga liga){
		String tiraSQL = "UPDATE umpires SET juegosarbit='"+0+"';";
		Conexion.ejecutar(tiraSQL);
	}

	public void actionPerformed(ActionEvent e){
		ControladorVentanaCalendario controladorVentanaCalendario;
		ControladorVentanaPosiciones controladorVentanaPosiciones;
		LigaDAO ligaDAO = new LigaDAO();
		
		if(e.getActionCommand().equalsIgnoreCase("Calendario")){
			controladorVentanaCalendario = new ControladorVentanaCalendario(liga);
		}else
			if (e.getActionCommand().equalsIgnoreCase("Posiciones")){
				controladorVentanaPosiciones = new ControladorVentanaPosiciones(liga);
			}
			else{
			/*	liga.getEquipos().clear();
				liga.getJugAnotPart().clear();
				liga.getPartidos().clear();
				liga.getPartidos().clear();
				liga.getUmpires().clear();*/
				ligaDAO.reiniciarPartidos();
				ligaDAO.reiniciarPartidoJugador();
				actualizarJuegArbUmpires(liga);
				actualizarJuegEquipos(liga);
				//umpireDAO.actualizarJuegArbUmpires(liga);
				//equipoDAO.actualizarJuegEquipos(liga);
				ventanaPlayoff.mostrarMensaje("La liga fue reiniciada");
				ventanaPlayoff.dispose();
			}
	}
}
